package com.asa.control_theory.utils;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.asa.control_theory.D;
import com.asa.control_theory.utils.bean.ZhuangTai_Matrix;
import com.asa.control_theory.utils.bean.ZhuangTai_ZhuanYi_Matrix;
import com.asa.hutils.MathHUtils;
import com.asa.utils.Calculate;

/**
 * 	线性多变量系统的综合与设计
 * 	反馈的，即输入u会等于状态x矩阵或者返回y矩阵的一个计算
 * 	即 	u = f(x)
 * 	或	u = f(y)
 * 	需要注意的是，把u放入状态矩阵中，转化成了状态矩阵的标准形式之后，
 * 	输入不是u了，而是r，暂时这个r先不说明，它是f()方程的不与x相乘的部分
 * 
 * 
 * u = -Kx + r
 * u = -Hy + r
 * 
 */
public class GongShi7 {

	public static void main(String[] args) throws Exception {
		ZhuangTai_Matrix nengkong1 = new ZhuangTai_Matrix();

		
		ZhuangTai_Matrix transform = transform(nengkong1);
		
		

	}

	private static ZhuangTai_Matrix transform(ZhuangTai_Matrix nengkong1) {
		double[][] a = nengkong1.getA();
		double[][] b = nengkong1.getB();
		double[][] c = nengkong1.getC();
		double[][] d = nengkong1.getD();

		
		double[][] k = nengkong1.getK();
		double[][] h = nengkong1.getH();
		
		
		//如果u它只是和x有关系
		double[][] ma = MathHUtils.copy(a);
		if (k!=null) {
			double[][] chenfa = MathHUtils.chenfa(b, k);
			ma =  MathHUtils.jiafa(a, MathHUtils.chenfa(chenfa, -1));
		}else if (h!=null) {
			double[][] chenfa = MathHUtils.chenfa(b, h);
			double[][] chenfa2 = MathHUtils.chenfa(chenfa, c);
			ma =  MathHUtils.jiafa(a, MathHUtils.chenfa(chenfa2, -1));
		}
		
		
		
		//返回后与u相关的函数就没有，一个标准的状态矩阵abcd
		ZhuangTai_Matrix result = new ZhuangTai_Matrix();

		
		
		result.setA(ma);
		result.setB(MathHUtils.copy(b));
		result.setC(MathHUtils.copy(c));
		result.setD(MathHUtils.copy(d));
		
		
		return result;
		
	}


	
	
	
	
	
	
	
	
	
	
	

}
